# RUN: llvm-mc -triple=aarch64 -mattr +gcs -disassemble %s 2> %t | FileCheck %s

[0x00,0x25,0x18,0xd5]
[0x01,0x25,0x38,0xd5]
// CHECK: msr     GCSCR_EL1, x0
// CHECK: mrs     x1, GCSCR_EL1

[0x22,0x25,0x18,0xd5]
[0x23,0x25,0x38,0xd5]
// CHECK: msr     GCSPR_EL1, x2
// CHECK: mrs     x3, GCSPR_EL1

[0x44,0x25,0x18,0xd5]
[0x45,0x25,0x38,0xd5]
// CHECK: msr     GCSCRE0_EL1, x4
// CHECK: mrs     x5, GCSCRE0_EL1

[0x26,0x25,0x1b,0xd5]
[0x27,0x25,0x3b,0xd5]
// CHECK: msr     GCSPR_EL0, x6
// CHECK: mrs     x7, GCSPR_EL0

[0x0a,0x25,0x1c,0xd5]
[0x0b,0x25,0x3c,0xd5]
// CHECK: msr     GCSCR_EL2, x10
// CHECK: mrs     x11, GCSCR_EL2

[0x2c,0x25,0x1c,0xd5]
[0x2d,0x25,0x3c,0xd5]
// CHECK: msr     GCSPR_EL2, x12
// CHECK: mrs     x13, GCSPR_EL2

[0x0e,0x25,0x1d,0xd5]
[0x0f,0x25,0x3d,0xd5]
// CHECK: msr     GCSCR_EL12, x14
// CHECK: mrs     x15, GCSCR_EL12

[0x30,0x25,0x1d,0xd5]
[0x31,0x25,0x3d,0xd5]
// CHECK: msr     GCSPR_EL12, x16
// CHECK: mrs     x17, GCSPR_EL12

[0x12,0x25,0x1e,0xd5]
[0x13,0x25,0x3e,0xd5]
// CHECK: msr     GCSCR_EL3, x18
// CHECK: mrs     x19, GCSCR_EL3

[0x34,0x25,0x1e,0xd5]
[0x35,0x25,0x3e,0xd5]
// CHECK: msr     GCSPR_EL3, x20
// CHECK: mrs     x21, GCSPR_EL3

[0x55,0x77,0x0b,0xd5]
// CHECK: gcsss1 x21

[0x76,0x77,0x2b,0xd5]
// CHECK: gcsss2    x22

[0x19,0x77,0x0b,0xd5]
// CHECK: gcspushm x25

[0x3f,0x77,0x2b,0xd5]
// CHECK: gcspopm

[0x39,0x77,0x2b,0xd5]
// CHECK: gcspopm    x25

[0x7f,0x22,0x03,0xd5]
// CHECK: gcsb    dsync

[0x7a,0x0f,0x1f,0xd9]
// CHECK: gcsstr   x26, x27

[0xfa,0x0f,0x1f,0xd9]
// CHECK: gcsstr   x26, sp

[0x7a,0x1f,0x1f,0xd9]
// CHECK: gcssttr  x26, x27

[0xfa,0x1f,0x1f,0xd9]
// CHECK: gcssttr  x26, sp

[0x9f,0x77,0x08,0xd5]
// CHECK: gcspushx

[0xbf,0x77,0x08,0xd5]
// CHECK: gcspopcx

[0xdf,0x77,0x08,0xd5]
// CHECK: gcspopx
